package com.toe.forum.service;

import com.toe.common.restful.JsonPage;
import com.toe.pojo.dto.forum.UserLikeAddDTO;
import com.toe.pojo.dto.forum.UserLikeUpdateDTO;
import com.toe.pojo.entity.forum.ForumUserLike;
import com.baomidou.mybatisplus.extension.service.IService;
import com.toe.pojo.vo.forum.UserLIkeVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * <p>
 * 点赞用户映射表 服务类
 * </p>
 *
 * @author 陶涛
 * @since 2022-07-19
 */
public interface ForumUserLikeService extends IService<ForumUserLike> {

    /**
     * 新增用户点赞文章映射
     * @param userLikeAddDTO
     */
    void insert(UserLikeAddDTO userLikeAddDTO);

    /**
     * 根据ID删除用户点赞文章映射
     * @param id
     */
    void deleteById(Long id);

    /**
     * 删除指定点赞文章映射
     * @param userId
     * @param articleId
     */
    void deleteUserLike(long userId,long articleId);

    /**
     * 更新用户点赞文章映射
     * @param userLikeUpdateDTO
     */
    void updateUserLike(UserLikeUpdateDTO userLikeUpdateDTO);

    /**
     * 查询所有的用户点赞文章映射
     * @return
     */
    List<UserLIkeVO> selectAllUserLike();

    /**
     * 分页查询所有的用户点赞文章映射
     * @return
     */
    JsonPage<UserLIkeVO> selectAllUserLikePage(Integer pageNum,Integer pageSize);

    /**
     * 查询对应文章ID的文章的所有点赞映射
     * @param articleId
     * @return
     */
    List<UserLIkeVO> selectAllUserLikeByArticleId(long articleId);

    /**
     * 分页查询对应文章ID的文章的所有点赞映射
     * @param articleId
     * @return
     */
    JsonPage<UserLIkeVO> selectAllUserLikeByArticleIdPage(long articleId,Integer pageNum,Integer pageSize);

    /**
     * 查询某条用户点赞文章映射是否存在
     * @param userId
     * @param articleId
     * @return
     */
    Boolean selectOneUserLike(long userId,long articleId);
}
